package com.sy.mapper;

import com.sy.entity.Student;
import com.sy.entity.User;
import com.sy.vo.StudentVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author:fma
 * @Date: 2021/10/11 16:25
 */
public interface StudentMapper {

    /**
     * 查询学生个人信息，进行密码修改操作
     *
     * @param sno 学生的学号
     * @return 学生的个人信息
     */
    Student getStuPwdByName(Integer sno);

    /**
     * @param sno 学号
     * @return
     * @Author:cxl 根据学号查询学生
     * @Author:cxl 根据学号查询学生
     */
    Student getStudentBySno(Integer sno);

    /**
     * 修改学生个人信息
     * @param studentVo 前端传递的值
     * @return 是否修改成功
     */
    boolean fixStuBySno(StudentVo studentVo);

    /**
     * 添加单个学生
     *
     * @param student
     * @return 插入与否
     */
    boolean addStudent(Student student);

    /**
     * 根据User信息学生登陆
     * @Author:zhf
     * @param user
     * @return
     */
    Student loginStudent(User user);

    /**
     * 查询所有学生信息
     *
     * @return 学生信息
     */
    List<Student> queryAllStudents();

    /**
     * 查询所有学生年级信息
     * @Author:zhf
     * @return 所有学生年级信息
     */
    List<String> getAllGrade();

    /**
     * 查询班级信息
     * @Author:zhf
     * @param grade
     * @return 班级信息
     */
    List<String> getClassNameByGrade(String grade);

    /**
     * 通过年级和班级查询学生信息
     * @Author:zhf
     * @param grade,className
     * @return 学生信息
     */
    List<Student> queryStudentsByGradeAndClassName(@Param("grade") String grade,
                                                   @Param("className") String className);

    /**
     * 通过学生姓名查询学生信息
     * @Author:zhf
     * @param studentName
     * @return 学生信息
     */
    List<Student> queryStudentsByStudentName(String studentName);

    /**
     * 修改学生信息
     * @Author:zhf
     * @param student
     * @return 是否成功
     */
    Boolean redactStudent(Student student);

    /**
     * 添加除学号学生信息
     * @Author:zhf
     * @param student
     * @return 是否成功
     */
    Boolean addInformationExceptStudentId(Student student);

    /**
     * 通过主键Id添加学号
     * @Author:zhf
     * @param studentId,Id
     * @return 是否成功
     */
    Boolean addStudentId(@Param("studentId") Integer studentId,
                         @Param("id") Integer id);

    /**
     * 通过主键Id删除学生信息
     * @Author:zhf
     * @param id
     * @return 是否成功
     */
    Boolean delStudentById(Integer id);
}
